﻿using System;
using System.ComponentModel;
using Loki.Commands;
using Loki.Utils;

namespace Loki.UI
{
    public interface IViewModel : INotifyPropertyChanged, ICentralizedChangeTracking, IDisposable
    {
        ICommand Activate { get; }

        ICommand Desactivate { get; }

        bool IsActive { get; }

        ICommand Close { get; }

        string DisplayName { get; set; }

        bool IsValid { get; set; }

        IViewModel ModalViewModel { get; set; }

        void Initialize();

        void LoadData();

        void StartInteraction();

        event EventHandler Start;

        event EventHandler Load;

        event EventHandler Init;

        string Status { get; set; }

        ICommand Validate { get; }

        bool ValidationEnabled { get; }
    }
}
